%define pg.RootNamespace ParserGenerator
%define pg.SourceContextNamespace ParserGenerator.Input
%define pg.OutputNamespace ParserGenerator.Output

%define pg.datatype.namespace ParserGenerator.SyntacticAnalysis
%define pg.datatype.usings (
    ParserGenerator.Collections,
    ParserGenerator.Input,
    ParserGenerator.Output,
)

%define pg.parser.usings (
    System,
    System.Collections.Generic,
    System.Collections.ObjectModel,
    System.Diagnostics,
    System.IO,
    System.Linq,
    System.Numerics,
    System.Text,
    ParserGenerator.CharacterMapping,
    ParserGenerator.Collections,
    ParserGenerator.Exceptions,
    ParserGenerator.Extensions,
    ParserGenerator.Input,
    ParserGenerator.Output,
)

%define pg.parser.classname ProgramDescriptionParser
%define pg.parser.namespace ParserGenerator.SyntacticAnalysis

%include ProgramDescriptionParser.Tokenizer
%include ProgramDescriptionParser.ParameterList

%include ProgramDescriptionParser.Expressions
%include ProgramDescriptionParser.TypeExpressions
%include ProgramDescriptionParser.Statements
%include ProgramDescriptionParser.SyntacticExpressions
%include ProgramDescriptionParser.LexicalExpressions
%include ProgramDescriptionParser.Directives

IRecursiveLexicalAliasChecker.Check(n : LexicalExpression) -> bool
ICharClassCollector.Process(n : LexicalExpression)
ILexicalExpressionCompiler.Compile(n : LexicalExpression) -> ParserGenerator.ScannerConstruction.ScannerAutomatonItemSetPack
ISyntacticExpressionReducer.Reduce(n : SyntacticExpression) -> ParserGenerator.GrammarConstruction.GrammarSymbol
IDefinedTokenCollector.Process(n : SemanticAction | Statement)

IExpressionTranslator.Translate(n : Expression) -> ParserGenerator.Languages.CSharp.Expression
ITypeExpressionTranslator.Translate(n : TypeExpression) -> ParserGenerator.Languages.CSharp.Type
IStatementTranslator.Translate(n : Statement) -> ParserGenerator.Languages.CSharp.Statement
ITypeDeclaratorTranslator.Translate(n : TypeDeclarator) -> ParserGenerator.Languages.CSharp.TypeDeclaration
IInterfaceMemberDeclaratorTranslator.Translate(n : InterfaceMemberDeclarator) -> ParserGenerator.Languages.CSharp.InterfaceMemberDeclaration
IClassMemberDeclaratorTranslator.Translate(n : ClassMemberDeclarator) -> [ParserGenerator.Languages.CSharp.ClassMemberDeclaration]
